#pragma once
#ifndef SMPPQUERYBROADCASTSMRESP_HPP
#define SMPPQUERYBROADCASTSMRESP_HPP

#include "SMPPHeader.hpp"
#include "SMPPQueryBroadcastResponseOptionalTLVs.hpp"
#include "SMPPMessageState.hpp"
#include "SMPPBroadcastAreaIdentifier.hpp"
#include "SMPPBroadcastAreaSuccess.hpp"
#include <QVector>

namespace smpp {
namespace pdu{
	class SMPP_DLLPRFX QueryBroadcastSMResp : public Header,
	public QueryBroadcastResponseOptionalTLVs{
		CoctetString _MessageId;
		MessageState *_MessageState;
		QVector<BroadcastAreaIdentifier> _BroadcastAreaIdentifier;
		BroadcastAreaSuccess *_BroadcastAreaSuccess;
	public:
		QueryBroadcastSMResp(const Header &nHeader = Header(),
			const CoctetString &nMessageId = "",
			const MessageState *nMessageState = 0,
			const QVector<BroadcastAreaIdentifier> nBroadcastAreaIdentifier = 
			QVector<BroadcastAreaIdentifier>(),
			const BroadcastAreaSuccess *nBroadcastAreaSuccess = 0,
			const QueryBroadcastResponseOptionalTLVs &
			nQueryBroadcastResponseOptionalTLVs = 
			QueryBroadcastResponseOptionalTLVs());

		QueryBroadcastSMResp(const QueryBroadcastSMResp &);

		~QueryBroadcastSMResp();

		void setMessageId(const CoctetString &);

		const CoctetString &getMessageId() const;

		void setMessageState(const MessageState *);

		const MessageState *getMessageState() const;

		void addBroadcastAreaIdentifier(const BroadcastAreaIdentifier &);

		void setBroadcastAreaIdentifier(
			const QVector<BroadcastAreaIdentifier> &);

		const QVector<BroadcastAreaIdentifier> &
			getBroadcastAreaIdentifier() const;

		void setBroadcastAreaSuccess(const BroadcastAreaSuccess *);

		const BroadcastAreaSuccess *getBroadcastAreaSuccess() const;

		void calcCommandLength();		
	};
}
}

#endif
